/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package cz.vse.adventura.po1715.xshet00_shevtsova.gui;

import cz.pecinovsky.english.pojj.adv_framework.game_gui.IGameG;
import cz.pecinovsky.english.pojj.adv_framework.game_gui.IObjectG;
import cz.pecinovsky.english.pojj.adv_framework.game_gui.IPlaceG;
import cz.pecinovsky.english.pojj.adv_framework.test_util.default_gui.APanelPrvků;
import cz.pecinovsky.english.pojj.adv_framework.test_util.default_gui.PrvekPanelu;
import java.util.ArrayList;
import java.util.Collection;

/**
 *
 * @author TShevtsova
 */
@SuppressWarnings("serial")
class PanelPředmětů extends APanelPrvků<IPlaceG>
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Vytvoří nový panel pro zobrazování předmětů aktuální místnosti.
     */
    PanelPředmětů()
    {
        super("Předměty v místnosti");
    }



//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================

    /***************************************************************************
     * Hlášeni o změně předmětů v aktuální místnosti zapříčiněné
     * buď jejich přímým přidáním či odebráním, anebo změnou místnosti.
     *
     * @param místnost Místnost, jejíž předměty je třeba zobrazit
     */
    @Override
    public void notice(IPlaceG místnost)
    {
        Collection<PrvekPanelu> prvky = new ArrayList<PrvekPanelu>();
        for (IObjectG předmět : místnost.getObjects()) {
            PrvekPanelu pp = new PrvekPanelu(předmět);
            prvky.add(pp);
        }
        zpracujHlášení(prvky);
    }


    /***************************************************************************
     * Inicializuje panel pro práci s novou hrou.
     *
     * @param hra Hra, s níž bude panel od této chvíle komunikovat
     */
    @Override
    public void inicializuj(IGameG hra)
    {
        hra.addObjectListener(this);
        notice(hra.getActualPlace());
    }


//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTY A METODA MAIN =======================================================
//
//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        PanelPředmětů inst = new PanelPředmětů();
//    }
//    /** @param args Parametry příkazového řádku - nepoužívané. */
//    public static void main( String[] args )  {  test();  }
}
